package com.zhs.study.common.Enum;

import lombok.Data;

import java.io.Serializable;

/**
 * 包装返回类
 * @author zhenghuisheng
 * @since 2023.04.18
 */
@Data
public class R<T> implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 是否成功
     */
    private Boolean success;

    /**
     * 返回码
     */
    private Integer code;

    /**
     * 返回消息
     */
    private String message;

    /**
     * 返回数据
     */
    private T data;

    /**
     * 成功返回
     */
    public static <T> R<T> ok(){
        R<T> r = new R<T>();
        r.setSuccess(true);
        r.setCode(ResultCode.SUCCESS.getCode());
        r.setMessage(ResultCode.SUCCESS.getMessage());
        return r;
    }

    /**
     * 操作成功ok方法
     */
    public static <T> R<T> ok(T data) {
        R<T> r = new R<T>();
        r.setSuccess(true);
        r.setCode(ResultCode.SUCCESS.getCode());
        r.setMessage(ResultCode.SUCCESS.getMessage());
        r.setData(data);
        return r;
    }

    /**
     * 失败返回
     */
    public static <T> R<T> error(){
        R<T> r = new R<T>();
        r.setSuccess(false);
        r.setCode(ResultCode.ERROR.getCode());
        r.setMessage(ResultCode.ERROR.getMessage());
        return r;
    }

    /**
     * 操作失败error方法
     */
    public static <T> R<T> error(T data) {
        R<T> r = new R<T>();
        r.setSuccess(false);
        r.setCode(ResultCode.ERROR.getCode());
        r.setMessage(ResultCode.ERROR.getMessage());
        r.setData(data);
        return r;
    }

}

